Day 16 문자열, 수학, 배열, 조건문

Day16 16단계 20231104

1. 편지

class Solution {
    public int solution(String message) {
        return 2*message.length();
    }
}

2. 가장 큰 수 찾기

import java.util.Arrays;
import java.util.stream.IntStream;
class Solution {
    public int[] solution(int[] array) {
        int[] answer = new int[2];
        answer[0] = Arrays.stream(array).max().getAsInt();
        answer[1] = IntStream.rangeClosed(1, array.length)
        			.filter(i -> array[i]==answer[0])
        			.findFirst()
        			.getAsInt();
        return answer;
    }
}
class Solution {
    public int[] solution(int[] array) {
        int[] answer = new int[2];
		for(int i = 0; i < array.length; i++) {
			answer[1] = ( Math.max(array[i], answer[0]) == array[i] ) ? i : answer[1];
			answer[0] = Math.max(array[i], answer[0]);
		}
        return answer;
    }
}
List<Integer> list = Arrays.stream(array).boxed().collect(Collectors.toList());
int max = list.streamcompareTo).orElse(0;
int index = list.indexOf(max);
return new int[] {max, index};

3. 문자열 계산하기

class Solution {
    public int solution(String my_string) {
		String[] str = my_string.split(" ");
		int answer = Integer.parseInt(str[0]);
		for(int i = 1; i < str.length - 1; i+=2) {
			if (str[i].equals("+")) {
				answer += Integer.parseInt(str[i+1]);
			} else if (str[i].equals("-")) {
				answer -= Integer.parseInt(str[i+1]);	
			}
		}
        return answer;
    }
}
Arrays.stream(my_string.replaceAll("- ", "-").replaceAll("[+] ", "").trim().split(" "))
		.mapToIntparseInt
		.sum();

4. 배열의 유사도

import java.util.*;
import java.util.stream.Collectors;
class Solution {
    public int solution(String[] s1, String[] s2) {
		int answer = 0;
		List<String> list = Arrays.stream(s1).collect(Collectors.toList());
		for(String str : s2) {
			if (list.contains(str)) {
				answer++;
			}
		}
        return answer;
    }
}
Stream<Boolean> stream = Arrays.stream(s1).map(s -> Arrays.asList(s2).contains(s)).filter(b -> b);
int answer = (int) stream.count();
return answer;
// filter()가 없는 경우
Stream<Boolean> stream = Arrays.stream(s1).map(s -> Arrays.asList(s2).contains(s));
stream.forEachprintln;
false
true
true
// filter()가 있는 경우
Stream<Boolean> stream = Arrays.stream(s1).map(s -> Arrays.asList(s2).contains(s)).filter(b->b);
stream.forEachprintln;
true
true